ARM架构下的centos7安装k8s | 您所在的位置:网站首页 › centos arm架构 › ARM架构下的centos7安装k8s |
平常工作中接触较多的是X86架构,这次偶尔接触了下ARM架构,在ARM架构下的CentOS7系统上安装k8s,拉取docker镜像时,遇到了坑,在此记录下。 首先说下什么是cpu架构? 不同的CPU设计实现,就称为“CPU 架构”(CPU architecture)。不同的CPU架构有不同的指令集,彼此不通用,这导致运行在上面的软件也不兼容,必须重新编译。如果没有做适配,一个架构下的软件就无法移植到另一个架构。从CPU发明到现在,有非常多种架构,从我们熟悉的X86、ARM,到不太熟悉的MIPS、IA64,它们之间的差距都非常大。但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。ARM架构的CPU使用的是RISC(精简指令集),而X86架构使用的是CISC。简单来说,ARM架构的CPU功耗低,更节能;X86架构的CPU性能强,易扩展。 接下来就是安装K8S了。 首先在各个节点上安装docker服务,执行如下命令。 yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io systemctl start docker&& systemctl enable docker由于k8s和docker默认使用的Cgroup驱动程序不一样,这会导致k8s在资源紧张的情况下运行不稳定,所以统一改为systemd来驱动。docker默认使用的国外镜像源,导致我们拉取镜像时很慢,建议修改为国内的镜像源。 echo -e '{\n"registry-mirrors": ["https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],\n"exec-opts": [ "native.cgroupdriver=systemd" ]\n}' >/etc/docker/daemon.json systemctl daemon-reload systemctl restart docker docker info|grep Cgroup若显示Cgroup Driver: systemd,则更改成功。 k8s中,为了确保 iptables 能够监控容器的网络通信,需要修改一些内核参数。 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables echo 1 > /proc/sys/net/ipv4/ip_forward lsmod | grep br_netfilterkube-proxy使用ipvs来实现负载均衡,所以需要安装ipvs环境。 modprobe ip_vs modprobe ip_vs_rr modprobe ip_vs_wrr modprobe ip_vs_sh modprobe nf_conntrack_ipv4通过lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看系统是否成功加载响应模块。 另外需要安装ipvsadm用于管理ipvs配置。 如果以上条件无法满足,及时kube-proxy开启了ipvs,也会回退到iptables。 接下来就是遇到坑的地方了,因为ARM架构,所以需要将repo源替换为ARM的。 vim /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64 enabled=1 gpgcheck=0 yum clean all yum makecache fast yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0 --disableexcludes=kubernetes systemctl enable kubelet此时不要启动kubelet,否则可能报错“failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml",”。 为了更快地安装k8s,此处我们先提前拉取需要的镜像,这儿也是个坑。由于我这里是ARM架构的平台,所以需要拉取arm64的镜像,要明确指明是arm64的镜像。此前若装了X86的镜像,需要删除。 docker rm $(docker ps -aq) docker rmi $(docker images -aq) docker pull mirrorgooglecontainers/kube-apiserver-arm64:v1.15.0 docker tag docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0 docker rmi mirrorgooglecontainers/kube-apiserver-arm64:v1.15.0初始化集群: sudo kubeadm init --apiserver-advertise-address 192.168.0.71 --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16安装pod网络: kubectl apply -f kube-flannel.yml接下来工作节点加入集群: kubeadm join x.x.x.x:x |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |